/**
 * ClassName: VariableCharBooleanTest
 * Package: PACKAGE_NAME
 * Description:变量 整数型 浮点型
 *
 * @Author 糕糕
 * @Create 2024-01-19 15:52
 * @Version 1.0
 */


/*
* 内存中的一个存储区域，该区域的数据可以在同一类型范围内不断变化
* 变量的构成包含三个要素：`数据类型`、`变量名`、`存储的值`
* Java中变量声明的格式：`数据类型 变量名 = 变量值`
* */

/*
* java中的变量按照数据类型来分类
*  基本数据类型（8种）
*   整型：byte/short/int/long
*   浮点型:float/double
*   字符型:char
*   布尔型:boolean


*  引用数据类型
*   类class
*   数据array
*   接口interface
*   枚举enum
*   注解annotation
*   记录record
* */

//1.定义变量时候，变量名要遵循标识符命名的规则和规范
//2.变量都有其作用域，变量只在作用域内是有效的，出了作用域就失效
//3.在同一个作用域内不能声明两个相同名称的变量
//4.定义好变量以后，就可以通过变量名的方式对变量进行调用和运算
//5.变量值在赋值时，必须满足变量的数据类型，并且在数据类型有效的范围内变化
public class VariableTest {

    public static void main(String[] args) {
        String gender;//变量声明
        gender="男";//变量赋值（或者初始化）

        gender="女";

        int age=10;


        System.out.println("是个"+gender+"孩子"+"今年"+age);
    }

    public static void main123(String[] args) {
        char gender='男';
        System.out.println(gender);
    }
}

/*
* 测试整型和浮点型
* 整型 byte short int long
* */
class VariableTest1{
    public static void main(String[] args) {
        //测试整型变量的使用
        //byte(1字节=8bit  -127~127  -2^7~2^7)  short(2字节 -2^15~2^15-1) int(4字节) long(8字节)
        byte b1=1;
        byte b2=127;
        //byte b3=128;//编译不通过

        short s1 = 1234;
        short s2 = 4566;

        long l1 = 1231234556;
        //开发过程中，定义整型变量时，没有特殊情况的话，通常都申明为int类型

        //测试浮点类型变量的使用 float/double
        double d1=12.3;
        //声明long类型变量时，需要提供后缀，后缀为"f"或"F"
        float f1=12.3f;
        System.out.println(d1);
        System.out.println(f1);
        //开发过程中，大家定义浮点型变量时，没有特殊情况的话，通常都声明为double类型，因为精度更高
        //float类型表数范围要大于long类型的表数范围，但精度不高



        //测试1：（解释见章末企业真题：为什么0.1 + 0.2不等于0.3）
        System.out.println(0.1 + 0.2);//0.30000000000000004

        //测试2：
        float ff1 = 123123123f;
        float ff2 = ff1 + 1;
        System.out.println(ff1);
        System.out.println(ff2);
        System.out.println(ff1 == ff2);

        //测试浮点数变量的精度
        //结论：通过测试发现浮点数变量的精度不高，如果在开发中，需要极高的精度，需要使用BigDecimal类替换

    }
}



/*
* 案例1：定义圆周率并赋值为3.14，现有3个圆的半径分别为1.2、2.5、6，求它们的面积。
* */


class CircularArea{
    public static void main(String[] args) {
        double PI=3.14;
        double r1=1.2;
        double r2=2.5;
        int r3=6;

        System.out.println("第1个圆的面积：" + PI * r1 * r1);
        System.out.println("第2个圆的面积：" + PI * r2 * r2);
        System.out.println("第3个圆的面积：" + PI * r3 * r3);
    }
}



//小明要到美国旅游，可是那里的温度是以华氏度为单位记录的。
//它需要一个程序将华氏温度（80度）转换为摄氏度，并以华氏度和摄氏度为单位分别显示该温度。
//℃ = (℉ - 32) / 1.8
class Temperature{
    public static void main(String[] args) {
        double hua=80;
        double she=(hua-32)/1.8;
        System.out.println(("华氏度" + hua+"℉转为摄氏度是" +she+"℃"));

    }
}